package com.tedu.day02.test;

/**
 *    普通类        抽象类       接口类
 *             【关系】          【特点】
 * 类与类        继承       只能单继承，可多层继承
 * 类与抽象      继承       可以单继承，不可以多继承
 * 抽象类与抽象类 继承       只能单继承，可多层继承
 * 类与接口      实现       可以单继承，也可以多实现
 *                        并且继承同时实现多个接口
 * 接口与接口    继承       可以单继承，可以多继承
 */
/*作业1：抽象类与接口的区别和关系？简答*/
    /*一、区别
1.定义方式
- 抽象类使用abstract关键字定义，可以包含抽象方法和非抽象方法，也可以有属性和构造方法。
- 接口使用interface关键字定义，只能包含抽象方法和常量（默认是public static final修饰），
不能有普通方法的实现和属性的定义，也没有构造方法。
2.继承方式
- 一个类只能继承一个抽象类，但可以实现多个接口。
- 抽象类可以提供部分实现，子类继承抽象类后可以扩展和实现抽象方法。接口则完全是一种规范，
实现接口的类必须实现接口中的所有方法。
3.设计目的
- 抽象类通常用于表示具有相似特征的一组对象的通用行为和属性，为子类提供一个通用的模板。
- 接口更侧重于定义行为规范，不同的类可以实现同一个接口以提供特定的行为。
二、关系
 1.两者可以相互配合使用。例如，一个抽象类可以实现一个或多个接口，同时提供一些通用的实现，
 而子类可以继承这个抽象类并实现接口中的其他方法，从而实现更灵活的设计。
2.在某些情况下，可以使用接口来模拟抽象类的多继承功能。当一个类需要继承多个不同的行为规范时，
可以通过实现多个接口来达到目的。
*/

//5.接口与接口：继承，可以单继承，多继承
//    interface  Loo{}
//interface  Foo{}
//interface Voo extends  Loo,Foo{}

//4.类与接口：实现，可以单继承，也可以多实现
//    interface  Loo{}    interface Foo{}
//    class Voo implements Loo,Foo{}

//3.抽象类与抽象类：继承，只能单继承，可多层继承
//abstract class Loo{}
//abstract class Voo extends Loo{}
//abstract class Uoo extends Voo{}

//2.类与抽象类：继承
//   abstract class Uoo{}  abstract class Voo{}
//class Loo extends Uoo{}

//1.类与类：继承---单继承,可以多层继承
//class Uoo{}
//class Loo extends Uoo{}
//class Voo extends Loo{}






public class 关系 {

}
